from ldap3 import Server, Connection, ALL, SUBTREE, ServerPool,ALL_ATTRIBUTES

LDAP_SERVER_POOL = ["10.39.95.5","10.39.95.6"]
LDAP_SERVER_PORT = 389
ADMIN_DN = "administrator"
ADMIN_PASSWORD = "Qdingnet@2018"
SEARCH_BASE = "ou=运维中心,ou=千丁互联,dc=qdingnet,dc=cn"


def ldap_auth(username, password):
    ldap_server_pool = ServerPool(LDAP_SERVER_POOL)
    conn = Connection(ldap_server_pool, user=ADMIN_DN, password=ADMIN_PASSWORD, check_names=True, lazy=False, raise_exceptions=False)
    conn.open()
    conn.bind()

    res = conn.search(
        search_base = SEARCH_BASE,
        search_filter = '(sAMAccountName=*)',
        search_scope = SUBTREE,
        attributes=['department', 'mail', 'sAMAccountName', 'telephoneNumber', 'displayName', 'title'],
        #ALL_ATTRIBUTES：获取所有属性值
        # attributes=ALL_ATTRIBUTES,
        # paged_size = 5
    )
    print(res)
    # if res:
    #     entry = conn.response
    #     print(entry)
    #     dn = entry['dn']
    #     attr_dict = entry['attributes']
    #
    #     # check password by dn
    #     try:
    #         conn2 = Connection(ldap_server_pool, user=dn, password=password, check_names=True, lazy=False, raise_exceptions=False)
    #         conn2.bind()
    #         if conn2.result["description"] == "success":
    #             print(2222)
    #             return True
    #         else:
    #             print("auth fail")
    #             return (False, None, None, None)
    #     except Exception as e:
    #         print("auth fail")
    #         return (False, None, None, None)
    # else:
    #     return (False, None, None, None)


if __name__ == "__main__":
    ldap_auth("sungaohui", "!QAZ2wsx")